#ifndef __4C1CC78B_928B_499d_B799_9567ECA83125__
#define __4C1CC78B_928B_499d_B799_9567ECA83125__

#include "../typedef/head.h"

/////////////////////////////////////////////////////////////////////////////////////////
// 
namespace xos
{
    // 
    // i_big_buf interface
    // 
    class i_big_buf
    {
    public:
        enum enumBufSize
        {
            BUF_SIZE = 1024 * 1024
        };

    public:
        virtual ~i_big_buf(){}

    public:
        // 
        // data
        // 
        virtual char * get_data( char * lpszData, int nLen, int * lpnLenNeeded ) = 0;
        virtual int set_data( const char * lpszData, int nLen ) = 0;

        virtual int get_len( int * lpnDataLen ) = 0;
        virtual int set_len( int nLen ) = 0;

        virtual int get_pos( int * lpnPos ) = 0;
        virtual int set_pos( int nPos ) = 0;

        virtual int get_buf_size( int * lpnBufLen ) = 0;

        // 
        // release
        // 
        virtual int release() = 0;
    };
}

#endif // __4C1CC78B_928B_499d_B799_9567ECA83125__
